package com.probox.common.entity.service.customer;

import com.baomidou.mybatisplus.extension.service.IService;
import com.probox.common.entity.domain.customer.CustomerLevelInfo;
import com.probox.common.entity.vo.customer.CustomerLevelInfoVo;
import com.probox.customer.api.domain.CustomerInfoAccount;
import com.probox.customer.api.domain.CustomerLevel;
import com.probox.customer.api.domain.CustomerLevelOpenVo;

import java.util.List;

/**
 * 客户信息、等级关系映射Service接口
 *
 * @author zsy
 * @date 2021-05-27
 */
public interface ICustomerLevelInfoService extends IService<CustomerLevelInfo> {

   CustomerLevel getLevelByUid( Long customerUid);


    /**
     * 根据客户id查询等级名称
     *
     * @param customerUid
     * @return
     */
    public String getLevelNameByUid(Long customerUid);

    /**
     * 根据客户查询等级
     *
     * @param customerUid
     * @return
     */
    public CustomerLevelInfo getLevel(Long customerUid);

    /**
     * 查询客户信息、等级关系映射
     *
     * @param customerUid 客户信息、等级关系映射ID
     * @return 客户信息、等级关系映射
     */
    public CustomerLevelInfo selectCustomerLevelInfoById(Long customerUid);


    /**
     * 查询客户信息、等级关系映射列表
     *
     * @param customerLevelInfo 客户信息、等级关系映射
     * @return 客户信息、等级关系映射集合
     */
    public List<CustomerLevelInfo> queryList(CustomerLevelInfo customerLevelInfo);





    /**
     * 绑定客户免费等级
     */
    public void bindCustoemrLevelProbox(Long fundUId, Long platformUid);

    /**
     * 获取客户当前绑定等级信息
     */
    public List<CustomerLevelInfo> getCustomerBindLevelInfo(Long customerUid, Long fundUId, Long platformUid);

    /**
     * 判断当前客户是否为付费会员
     *
     * @return
     */
    public Boolean getIsPayLevel(Long customerUid);


    /**
     * 查看客户绑定等级历史记录
     */
    public List<CustomerLevelInfoVo> levelInfoHistory(Long CustomerUid);

    /**
     * 查看客户绑定等级历史记录总数
     *
     * @param customerUid
     * @return
     */
    public Integer levelInfoHistoryTotal(Long customerUid);

    /**
     * 查看客户账号信息
     *
     * @param customerUid
     * @return
     */
    public List<CustomerInfoAccount> getCustomerAccount(Long customerUid);


}
